package util;

import org.springframework.transaction.annotation.Transactional;

public interface GeneralDao<K,T> {
	/**
	 * 删除PO
	 */
	@Transactional
	public abstract void delete(T entity);
	/**
	 * 根据某个属性加po
	 */
	public T get(String propName, Object val);
	/**
	 * 新加PO
	 */
	@Transactional
	public abstract void save(T entity);

	/**
	 * 更新PO
	 */
	@Transactional
	public abstract void update(T entity);

	/**
	 * 根据ID加载PO
	 */
	@SuppressWarnings("unchecked")
	public abstract T get(K oid);

	/**
	 * 根据ID加载PO
	 */
	@SuppressWarnings("unchecked")
	public abstract T load(K oid);

	/**
	 * 更新或保存PO
	 */
	@Transactional
	public abstract void saveOrUpdate(T entity);
	/**
	 * 根据ID删除PO
	 */
	@Transactional
	public abstract void deleteById(K id);

	/**
	 * 保存PO到数据库，参数PO不改�?
	 * 返回保存的PO
	 */
	@SuppressWarnings("unchecked")
	@Transactional
	public abstract T merge(T entity);

	/**
	 * 获取当前类实体的�?有实�?
	 */
	@SuppressWarnings("unchecked")
	public abstract java.util.List<T> list();

	/**
	 * �?查某个OID对应的实体是否存�?
	 */
	public abstract boolean has(K oid);
}
